package aggregate

import (
	"errors"
	"mine-info-server/global"
	"mine-info-server/utils/jwt_util"
	"time"
)

/*
   @author:zhongyang
   @date:2023/4/12
   @description:用户聚合根
*/

var LoginError = errors.New("登陆失败，帐号密码不正确！")

type UserAggregate struct {
	// 用户id
	Id string `json:"id"`
	// 用户名
	UserName string `json:"user_name"`
	// 密码
	Password string `json:"password"`
}

// Login 这个缓存应该放到应用层去，后面改一下
func (u *UserAggregate) Login(username, password string) (string, error) {
	if username == "admin" && password == "123456" {
		// 找缓存中是否有登录记录
		res, err := global.GVA_CACHE.Value("admin_token" + username)
		if err == nil {
			return res.Data().(string), nil
		}
		token, err := jwt_util.GenerateToken()
		if err != nil {
			return "", errors.New("生成token失败")
		}
		// 将数据存入本地缓存中
		global.GVA_CACHE.Add("admin_token"+username, 10*time.Hour, token)
		return token, nil
	}
	return "", LoginError
}
